package Figures;

import java.awt.*;
import java.io.Serializable;

/**
 * 类功能描述：
 *直线类，实现了直线的绘制和移动等方法。
 * @author lix
 * @date 2023/12/28
 */

public class Line extends Figure  implements Serializable {


    public Line(Point start, Point end,int size,Color color) {
        super(start, end,size,color);
    }

    /**
     * 功能描述：
     * 实现直线的绘制方法
     * <p>
     * 步骤：
     * <ol>
     * <li>设置颜色</li>
     * <li>设置画笔粗细</li>
     * <li>调用Graphics2D实例绘制直线。</li>
     * </ol>
     * @param graphics2D 用于绘制的Graphics2D对象
     * @author lix
     * @date 2023/12/28 21:02
     */

    @Override
    public void Draw(Graphics2D graphics2D) {
        //实现Draw方法

        graphics2D.setColor(ShapeColor);
        graphics2D.setStroke(new BasicStroke(size));
        graphics2D.drawLine(start.x, start.y, end.x, end.y);
        //选取后显示边框
        if(isSelected){
            showSelectBorder(graphics2D);
        }
    }

    /**
     * 功能描述：实现直线的移动方法
     *<br>通过重写设置形状的pointer_center属性来改变图形的位置
     * @param graphics2D 用于绘制的Graphics2D对象
     * @param destination 将要把中心点移动到的Point位置
     * @author lix
     * @date 2023/12/28 22:49
     */



    @Override
    public void setEnd(Point end) {
        super.setEnd(end);
        calcPoint_left_top();
        calcPoint_right_bottom();
        calcWidthAndHeight();
        point_center = new Point(((point_left_top.x+point_right_bottom.x)/2),(point_left_top.y+point_right_bottom.y)/2);
    }
}
